<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>运算符</title>
</head>
<script>
    {
        //自增自减运算符
        //前置自增运算符，++写在变量的前面
        let num = 1;
        console.log(++num);//此时输出2
        //前置自增运算符，先+1，再输出结果

        //后置自增运算符，++写在变量的后面
        let num2 = 1;
        num2++;
        console.log(num2);//此时输出2
        //后置自增运算符，先输出原值，再+1

        //前置自增运算符与后置自增运算符的区别
        //当单独使用的时候是没有区别的，区别在于变量参与运算的时候
        let n = 1;
        let n2 = 1;
        console.log(++n + 1);//此时的输出结果为3，因为前置自增的效果是先将变量的值进行+1后再进行运算
        console.log(n2++ + 1);//此时的输出结果为2，因为后置自增的效果是先将变量的值进行运算后再进行+1
        //此时输n2变量的值发现数值已经进行了+1操作
        console.log(n2);
    }

    {
        //比较运算符
        let a = 12;
        let b = '12';
        console.log(a== b);//返回true，等号会自动将两边数据类型转换成一致
        let c = 12;
        let d = 12;
        console.log(c === d);//返回true，三个等号当数据类型和值完全一样的时候才会返回true
        console.log(a === b);//这种情况就会返回false
    }

    {
        //逻辑中断，当逻辑运算符的两端是表达式或者值进行运算的时候，当左边的值能确定的时候就不会进行右边的运算
        //逻辑与，当第一个表达式为真，则返回表达式2，如果第一个表达式为假，则返回表达式1；如果左边的表达式可以确定结果则不会进行右边表达式的计算
        console.log(123 && 456);//返回456
        console.log(0 && 123);//返回0
        let n =1;
        console.log(0 && n++);
        console.log(n);//n的值为1.不会进行自增操作

        //逻辑或。当第一个表达式为真，则返回表达式1，如果第一个表达式为假，则返回表达式2
        console.log(123 || 456);//返回123
        console.log(0 || 123);//返回123
    }

    {
        //赋值运算符
        let num = 1;
        num += 10;//等价于 num = num + 10;
        //相对应的还有-=，*=，/=，%=
    }
</script>
<body>

</body>
</html>